iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0

Golang

來吧來吧~終於來到了迴圈的世界,先上菜看看for的表現是如何的?

For

package main

import "fmt"

func main() {
	i := 1

	for i <= 10 {
		fmt.Println(i)

		i++
	}

	for i := 1; i <= 10; i++ {
		fmt.Println(i)
	}

}

此時break返回也來湊熱鬧了,原來跟其他家的玩法雷同阿,加了break就可以從迴圈中離開囉!!

package main

import "fmt"

func main() {
	for i := 1; i <= 10; i++ {
		if 5 < i {
			break
		}

		fmt.Println(i)
	}

}

阿~如果返回都一樣,沒道理忽略此次迴圈的方式會不同吧!

package main

import "fmt"

func main() {
	for i := 1; i <= 10; i++ {
		if i%2 == 0 {
			continue
		}

		fmt.Println(i)
	}
}

另外來看一下特別的goto吧!!
goto (跳到同函式中某個位置)
備註:
Goto這個使用方式看起來是頗具爭議的,有些人認為使用goto會讓程式的結構變得複雜(因為他會直接跳離),但也有人主張適時的使用goto反而可以讓程式碼更簡潔,這部分就見仁見智囉!

package main

import "fmt"

func main() {
  
   a := 10

   
   LOOP: for a < 20 {
      if a == 15 {
         a = a + 1
         goto LOOP
      }
      fmt.Println(a)
      a++    
   }  
}

最後來看一下 九九乘法唄

package main 

import "fmt"

func main() {
    twoForMethod()
    gotoMethod()
}

//
func twoForMethod() {
    for m := 1; m < 10; m++ {
        for n := 1; n <= m; n++ {
      fmt.Printf("%dx%d=%d ",n,m,m*n)
        }
        fmt.Println("")
    }
}
//
func gotoMethod() {
    for m := 1; m < 10; m++ {
    n := 1
    LOOP: if n <= m {
        fmt.Printf("%dx%d=%d ",n,m,m*n)
        n++
        goto LOOP
    } else {
        fmt.Println("")
    }
    n++
    }
}

陣列
宣告陣列的時候,要注意一下賦值的是int還是string唷,參考範例如下

package main

import "fmt"

func main() {
   var arr [10]int 
   var i,j int
 
   var langs [4]string
   langs[0] = "Go"
   fmt.Printf("langs[0] = %s\n",  langs[0] )
      
   for i = 0; i < 10; i++ {
      arr[i] = i  /* 设置 i + 100 */
   }

   /* 输出 */
   for j = 0; j < 10; j++ {
      fmt.Printf("arr[%d] = %d\n", j, arr[j] )
   }
}

然後我聽隔壁的老王說了一件很重要的事情
golang陣列的長度在定義後不可更改
golang陣列的長度在定義後不可更改
golang陣列的長度在定義後不可更改
很重要,所以我打了三次! 絕對不是混字阿


上一篇
Golang 變數與型態
下一篇
Golang 切片slice與Map
系列文
go go let's go - golang 從0開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言